91 research outputs found

    Strengthening the Zipper

    Get PDF
    AbstractThe zipper is a well known design pattern for providing a cursor-like interface to a data structure. However, the classic treatise by Huet only scratches the surface of some of its potential applications. In this paper we take inspiration from Huet, and describe a library suitable as an underpinning for structured editors. We consider a zipper structure that is suitable for traversing heterogeneous data types, encoding routes to other places in the tree (for bookmark or quick-jump functionality), expressing lexically bound information using contexts, and traversals for rendering a program indicating where the cursor is currently focused

    A flexible model for dynamic linking in Java and C#

    Get PDF
    Dynamic linking supports flexible code deployment, allowing partially linked code to link further code on the fly, as needed. Thus, end-users enjoy the advantage of automatically receiving any updates, without any need for any explicit actions on their side, such as re-compilation, or re-linking. On the down side, two executions of a program may link in different versions of code, which in some cases causes subtle errors, and may mystify end-users. Dynamic linking in Java and C# are similar: the same linking phases are involved, soundness is based on similar ideas, and executions which do not throw linking errors give the same result. They are, however, not identical: the linking phases are combined differently, and take place in different order. Consequently, linking errors may be detected at different times by Java and C# runtime systems. We develop a non-deterministic model, which describes the behaviour of both Java and C# program executions. The nondeterminism allows us to describe the design space, to distill the similarities between the two languages, and to use one proof of soundness for both. We also prove that all execution strategies are equivalent with respect to terminating executions that do not throw link errors: they give the same results

    Necessity Specifications for Robustness

    Full text link
    Robust modules guarantee to do only what they are supposed to do - even in the presence of untrusted, malicious clients, and considering not just the direct behaviour of individual methods, but also the emergent behaviour from calls to more than one method. Necessity is a language for specifying robustness, based on novel necessity operators capturing temporal implication, and a proof logic that derives explicit robustness specifications from functional specifications. Soundness and an exemplar proof are mechanised in Coq

    Implementation of SHAPES Case Studies (Artifact)

    Get PDF
    Our main paper presents {SHAPES}, a language extension which offers developers fine-grained control over the placement of data in memory, whilst retaining both memory safety and object abstraction via pooling and clustering. As part of the development of {SHAPES}, we wanted to investigate the usefulness of the concepts {SHAPES} brings to the table. To that extent, we implemented five such case studies. This publication provides the corresponding code and instructions on how to run these case studies and derive the results we provide

    What is Java binary compatibility?

    No full text
    Separate compilation allows the decomposition of programs into units that may be compiled separately, and linked into an executable. Traditionally, separate compilation was equivalent to the compilation of all units together, and modi cation and re-compilation of one unit required re-compilation of all importing units. Java suggests a more exible framework, in which the linker checks the integrity of the binaries to be combined. Certain source code modi cations, such asaddition of methods to classes, are de ned as binary compatible. The language description guarantees that binaries of types (i.e. classes or interfaces) modi ed in binary compatible ways may be re-compiled and linked with the binaries of types that imported and were compiled using the earlier versions of the modi ed types. However, this is not always the case: some of the changes considered by Java as binary compatible do not guarantee successful linking and execution. In this paper we study the concepts around binary compatibility. We suggest a formalization of the requirement of safe linking and execution without re-compilation, investigate alternatives, demonstrate several of its properties, and propose a more restricted de nition of binary compatible changes. Finally, we prove for a substantial subset of Java, that this restricted de nition guarantees error-free linking and execution.

    Expression of Tas1 Taste Receptors in Mammalian Spermatozoa: Functional Role of Tas1r1 in Regulating Basal Ca2+ and cAMP Concentrations in Spermatozoa

    Get PDF
    Background: During their transit through the female genital tract, sperm have to recognize and discriminate numerous chemical compounds. However, our current knowledge of the molecular identity of appropriate chemosensory receptor proteins in sperm is still rudimentary. Considering that members of the Tas1r family of taste receptors are able to discriminate between a broad diversity of hydrophilic chemosensory substances, the expression of taste receptors in mammalian spermatozoa was examined. Methodology/Principal Findings: The present manuscript documents that Tas1r1 and Tas1r3, which form the functional receptor for monosodium glutamate (umami) in taste buds on the tongue, are expressed in murine and human spermatozoa, where their localization is restricted to distinct segments of the flagellum and the acrosomal cap of the sperm head. Employing a Tas1r1-deficient mCherry reporter mouse strain, we found that Tas1r1 gene deletion resulted in spermatogenic abnormalities. In addition, a significant increase in spontaneous acrosomal reaction was observed in Tas1r1 null mutant sperm whereas acrosomal secretion triggered by isolated zona pellucida or the Ca2+ ionophore A23187 was not different from wild-type spermatozoa. Remarkably, cytosolic Ca2+ levels in freshly isolated Tas1r1-deficient sperm were significantly higher compared to wild-type cells. Moreover, a significantly higher basal cAMP concentration was detected in freshly isolated Tas1r1-deficient epididymal spermatozoa, whereas upon inhibition of phosphodiesterase or sperm capacitation, the amount of cAMP was not different between both genotypes. Conclusions/Significance: Since Ca2+ and cAMP control fundamental processes during the sequential process of fertilization, we propose that the identified taste receptors and coupled signaling cascades keep sperm in a chronically quiescent state until they arrive in the vicinity of the egg - either by constitutive receptor activity and/or by tonic receptor activation by gradients of diverse chemical compounds in different compartments of the female reproductive tract

    Flexible, Source Level Dynamic Linking And Re-Linking

    No full text
    We give a formal semantics for dynamic linking and re-linking of code. The semantics is at source language level, and allows linking at a finer grain than current Java or C# implementations: Besides supporting the loading and verification of classes interleaved with program execution, it also allows type-safe removal and replacement of classes, fields and methods. Such extended features support unanticipated software evolution.
    corecore